_require       "./General.smi"
_require       "./IntInf.smi"
_require local "./SMLSharp_ScanChar.smi"
_require local "./String.smi"
_require       "./StringCvt.smi"
_use local      "./Word_common.sml"

structure Word8 =
struct
  val wordSize : int
  val toLarge = SMLSharp_Builtin.Word8.toWord64
  val toLargeX = SMLSharp_Builtin.Word8.toWord64X
  val toLargeWord = SMLSharp_Builtin.Word8.toWord64
  val toLargeWordX = SMLSharp_Builtin.Word8.toWord64X
  val fromLarge = SMLSharp_Builtin.Word64.toWord8
  val fromLargeWord = SMLSharp_Builtin.Word64.toWord8
  val toLargeInt : word8 -> LargeInt.int
  val toLargeIntX : word8 -> LargeInt.int
  val fromLargeInt : LargeInt.int -> word8
  val toInt = SMLSharp_Builtin.Word8.toInt32
  val toIntX = SMLSharp_Builtin.Word8.toInt32X
  val fromInt = SMLSharp_Builtin.Word8.fromInt32
  val andb = SMLSharp_Builtin.Word8.andb
  val orb = SMLSharp_Builtin.Word8.orb
  val xorb = SMLSharp_Builtin.Word8.xorb
  val notb = SMLSharp_Builtin.Word8.notb
  val << = SMLSharp_Builtin.Word8.lshift
  val >> = SMLSharp_Builtin.Word8.rshift
  val ~>> = SMLSharp_Builtin.Word8.arshift
  val + = SMLSharp_Builtin.Word8.add
  val - = SMLSharp_Builtin.Word8.sub
  val * = SMLSharp_Builtin.Word8.mul
  val div = SMLSharp_Builtin.Word8.div
  val mod = SMLSharp_Builtin.Word8.mod
  val compare : word8 * word8 -> General.order
  val < = SMLSharp_Builtin.Word8.lt
  val <= = SMLSharp_Builtin.Word8.lteq
  val > = SMLSharp_Builtin.Word8.gt
  val >= = SMLSharp_Builtin.Word8.gteq
  val ~ = SMLSharp_Builtin.Word8.neg
  val min : word8 * word8 -> word8
  val max : word8 * word8 -> word8
  val fmt : StringCvt.radix -> word8 -> string
  val toString : word8 -> string
  val scan : StringCvt.radix
             -> (char, 'a) StringCvt.reader
             -> (word8, 'a) StringCvt.reader
  val fromString : string -> word8 option
  type word = word8
end
